<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8>
    <title>O'Reilly: Developing JavaScript Web Applications 中译本</title>
    <link rel="stylesheet" href="css/application.css" type="text/css" charset="utf-8">
    <script src="../javascript/jquery.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/application.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>    
    <h1>O'Reilly: Developing JavaScript Web Applications 中译本</h1>
    <div id="west">
      
      <!--img src="http://img03.taobaocdn.com/tps/i3/T1rNWhXfdsXXXXXXXX-270-355.png" /!-->
	  <img src="http://img01.taobaocdn.com/tps/i1/T1YBC9XjJwXXXXXXXX-275-364.png" style="border:1px solid #d0d0d0" />
      
      <p><strong>Update!</strong> 官网图书介绍：<a href="http://oreilly.com/catalog/0636920018421/">O'Reilly: JavaScript Web Applications </a>.</p>
      
	  <p>《基于 MVC 的 JavaScript Web 富应用开发》<em>Developing JavaScript Web Applications</em>是 <a href="http://alexmaccaw.co.uk">Alex MacCaw</a> 的新作（<a href="http://oreilly.com">由O'Reilly出版发行</a>），本书系统而深入的讲解了如何使用最前沿的Web技术构建下一代互联网富应用程序。作者 Alex MacCaw 是一名Ruby/JavaScript 程序员，在开源社区中很有名望，是Spine框架的作者，同时活跃在纽约、旧金山和柏林的各大 Ruby/Rails 论坛。除了作为一名工程师，他还喜欢带着他的尼康D90和冲浪板环游世界。
	  </p>

	  <p>
		有赖于强大的JavaScript引擎以及CSS3和HTML5新技术，如今的JavaScript Web 富应用的用户体验已经可以和桌面系统相媲美。关键是如何平滑的将服务器端的复杂度移植到客户端，这并不容易做到。这本书将专注于讲述如何构建“优雅又不失高水准”（state of the art）的JavaScript应用，包括软件架构、模板引擎、框架和库、同服务器的消息通信等内容。
	  </p>

	  <p>
		通过由浅入深的讲解，你将学会如何构建具有丰富交互以及优雅体验的JavaScript应用，书中同样提供了大量的示例代码，可以帮助你更深入的理解很多重要的概念。
	  </p>

      <ul>
		<li>揭开<strong>MVC</strong>的神秘面纱，教你如何设计合理的架构以及处理应用内部模块之间的依赖</li>
		<li>介绍模板引擎和数据绑定</li>
		<li>讲解远程数据加载、第二代Ajax以及跨域请求</li>
		<li>利用<strong>WebSockets</strong>和<strong>Node</strong>构建实时应用</li>
		<li>拖拽上传文件以及上传进度提示</li>
		<li>讲解主流的库和框架，包括<strong>jQuery</strong>、<strong>JavaScriptMVC</strong>以及<strong>Backbone</strong></li>
		<li>编写测试用例，并使用控制台工具来调试你的应用</li>
		<li>部署应用的最佳实践，比如缓存机制和代码压缩等</li>
      </ul>

	  <p>
		本书中文版2012年4月份出版。
	  </p>

	  <!--added by jayli-->
	  <div id="disqus_thread"></div>
		<script type="text/javascript">
		/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
		var disqus_shortname = 'jswebapps'; // required: replace example with your forum shortname

		// The following are highly recommended additional parameters. Remove the slashes in front to use.
		// var disqus_identifier = 'unique_dynamic_id_1234';
		// var disqus_url = 'http://example.com/permalink-to-page.html';

		/* * * DON'T EDIT BELOW THIS LINE * * */
		(function() {
		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
		dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
		})();
		</script>
		<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
		<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
      
    </div>
    
    <div id="east">
      
      <!--form action="http://jswebapps.heroku.com/signup" method="post" accept-charset="utf-8">
        <p>Sign up to receive an email when the book is released!</p>
        <label><input type="text" name="email" placeholder="Email address"></label>
        <button>Signup &raquo;</button>
      </form-->

		<style>
		h2 {
			margin-top:0;padding-top:0;
		}
		</style>
      <h2>Table of Contents</h2>
    
      <ol id="toc">
      <li>引言
      <ol>
      <li>本书的目标读者</li>
      <li>附属文件</li>
      <li>代码约定
      <ol>
      <li>jQuery 示例代码</li>
      </ol></li>
      <li>Holla</li>
      <li>序</li>
      </ol></li>
      <li>MVC 和类
      <ol>
      <li>之初</li>
      <li>增加架构</li>
      <li>什么是MVC?</li>
      <li>模型</li>
      <li>视图</li>
      <li>控制器</li>
      <li>向模块化进军，创建类</li>
      <li>给类添加方法</li>
      <li>给库添加方法</li>
      <li>基于原型的类继承</li>
      <li>让类库可继承</li>
      <li>函数调用</li>
      <li>控制类库中的作用域</li>
      <li>增加私有方法</li>
      <li>提供“类”的类库</li>
      </ol></li>
      <li>事件和监听
      <ol>
      <li>监听事件</li>
      <li>事件顺序</li>
      <li>取消事件</li>
      <li>事件对象</li>
      <li>事件库</li>
      <li>切换上下文</li>
      <li>委托事件</li>
      <li>自定义事件</li>
      <li>自定义事件和jQuery插件</li>
      <li>DOM无关（Non-DOM）的事件</li>
      </ol></li>
      <li>模型和数据
      <ol>
      <li>MVC 和命名空间</li>
      <li>构建对象关系映射（ORM）
      <ol>
      <li>原型继承</li>
      <li>添加ORM属性</li>
      <li>持久化记录</li>
      </ol></li>
      <li>全局统一标识（GUID）
      <ol>
      <li>给ORM添加GUID</li>
      </ol></li>
      <li>寻址引用</li>
      <li>装载数据
      <ol>
      <li>载入内联数据</li>
      <li>通过Ajax载入数据</li>
      <li>JSONP</li>
      <li>夸域请求的安全性</li>
      </ol></li>
      <li>组装ORM</li>
      <li>本地存储</li>
      <li>给ORM添加本地存储</li>
      <li>将新纪录提交至服务器</li>
      </ol></li>
      <li>控制器和状态
      <ol>
      <li>模块模式
      <ol>
      <li>全局导入</li>
      <li>全局导出</li>
      </ol></li>
      <li>添加少量上下文
      <ol>
      <li>抽象出类库</li>
      <li>文档加载完成后载入控制器</li>
      <li>访问视图</li>
      <li>委托事件</li>
      </ol></li>
      <li>状态机</li>
      <li>路由选择
      <ol>
      <li>利用URL里的hash</li>
      <li>检测hash的变化</li>
      <li>爬取Ajax</li>
      <li>使用HTML5 History API</li>
      </ol></li>
      </ol></li>
      <li>视图和模板
      <ol>
      <li>动态渲染视图</li>
      <li>模板
      <ol>
      <li>模板工具箱</li>
      <li>模板存储</li>
      </ol></li>
      <li>绑定
      <ol>
      <li>JLink</li>
      <li>包扎模型</li>
      </ol></li>
      </ol></li>
      <li>依赖管理
      <ol>
      <li>Common.js
      <ol>
      <li>模块的声明</li>
      <li>模块和浏览器</li>
      </ol></li>
      <li>模块Loader
      <ol>
      <li>Yabble</li>
      <li>RequireJS</li>
      </ol></li>
      <li>包装模块</li>
      <li>模块的按需加载
      <ol>
      <li>LABjs</li>
      </ol></li>
      <li>FUBCs</li>
      </ol></li>
      <li>使用文件
      <ol>
      <li>浏览器支持</li>
      <li>获得文件信息</li>
      <li>文件输入</li>
      <li>拖拽
      <ol>
      <li>拖拽</li>
      <li>释放拖拽</li>
      <li>撤销默认拖拽</li>
      </ol></li>
      <li>复制和粘贴
      <ol>
      <li>复制</li>
      <li>粘贴</li>
      </ol></li>
      <li>读文件
      <ol>
      <li>二进制大对象和文件切割</li>
      </ol></li>
      <li>自定义浏览器按钮</li>
      <li>上传文件
      <ol>
      <li>Ajax 进度条</li>
      </ol></li>
      <li>jQuery拖拽上传
      <ol>
      <li>创建拖拽目标区域</li>
      <li>上传文件</li>
      </ol></li>
      </ol></li>
      <li>实时Web
      <ol>
      <li>实时历史记录</li>
      <li>WebSockets
      <ol>
      <li>Node.js 和 Socket.IO</li>
      </ol></li>
      <li>实时架构</li>
      <li>感知速度</li>
      </ol></li>
      <li>测试和调试
      <ol>
      <li>单元测试
      <ol>
      <li>断言</li>
      <li>QUnit</li>
      <li>Jasmine</li>
      </ol></li>
      <li>驱动</li>
      <li>傻瓜测试
      <ol>
      <li>使用僵尸进程</li>
      <li>使用Ichabod</li>
      </ol></li>
      <li>分布式测试</li>
      <li>提供支持</li>
      <li>监控工具
      <ol>
      <li>Web 监控工具</li>
      <li>Firebug</li>
      </ol></li>
      <li>控制台
      <ol>
      <li>控制台工具箱</li>
      </ol></li>
      <li>使用debugger</li>
      <li>分析网络请求</li>
      <li>Frofile和时间轴</li>
      </ol></li>
      <li>部署
      <ol>
      <li>性能</li>
      <li>缓存</li>
      <li>代码压缩（Minify）</li>
      <li>数据包压缩（GZIP）</li>
      <li>使用 CDN</li>
      <li>受众人群</li>
      <li>源代码</li>
      </ol></li>
      <li>库 - Spine
      <ol>
      <li>安装</li>
      <li>类
      <ol>
      <li>实例化</li>
      <li>类的扩展</li>
      <li>上下文</li>
      </ol></li>
      <li>事件</li>
      <li>模型
      <ol>
      <li>抓取记录</li>
      <li>模型的事件</li>
      <li>校验</li>
      <li>持久化</li>
      </ol></li>
      <li>控制器
      <ol>
      <li>代理</li>
      <li>元素</li>
      <li>委托事件</li>
      <li>控制器事件</li>
      <li>全局事件</li>
      <li>渲染模式</li>
      <li>节点模式</li>
      </ol></li>
      <li>创建联系人管理器
      <ol>
      <li>联系人模型</li>
      <li>侧边栏控制器</li>
      <li>联系人控制器</li>
      <li>App 控制器</li>
      </ol></li>
      </ol></li>
      <li>库 - Backbone
      <ol>
      <li>模型
      <ol>
      <li>模型和属性</li>
      </ol></li>
      <li>集合
      <ol>
      <li>控制集合顺序</li>
      </ol></li>
      <li>试图
      <ol>
      <li>渲染视图</li>
      <li>委托事件</li>
      <li>绑定上下文</li>
      </ol></li>
      <li>控制器</li>
      <li>与服务器保持同步
      <ol>
      <li>向集合中添加记录</li>
      <li>在服务器端发生了什么</li>
      <li>自定义行为</li>
      </ol></li>
      <li>创建任务列表</li>
      </ol></li>
      <li>库 - JavascriptMVC
      <ol>
      <li>简介
      <ol>
      <li>万物皆插件</li>
      </ol></li>
      <li>StealJS - 依赖管理
      <ol>
      <li>装载非JavaScript资源</li>
      <li>压缩</li>
      </ol></li>
      <li>类</li>
      <li>模块
      <ol>
      <li>对服务的封装</li>
      <li>事件</li>
      <li>Getter / Setters ?</li>
      <li>Model.Lists</li>
      </ol></li>
      <li>控制器</li>
      <li>视图</li>
      <li>把它们整合到一起</li>
      <li>事件</li>
      <li>创建任务列表</li>
      </ol></li>
      <li>附录 - jQuery primer
      <ol>
      <li>DOM 遍历</li>
      <li>DOM 操作</li>
      <li>事件</li>
      <li>Ajax</li>
      <li>做一个良民</li>
      <li>扩展</li>
      <li>创建一个 Growl jQuery 插件</li>
      </ol></li>
      <li>附录 - CSS 扩展
      <ol>
      <li>变量</li>
      <li>混合（Mixin）</li>
      <li>嵌套规则</li>
      <li>引入其他样式表</li>
      <li>颜色</li>
      <li>怎样才能用的更少?
      <ol>
      <li>通过命令行</li>
      <li>通过 Rack</li>
      <li>通过 JavaScript</li>
      <li>Less.app</li>
      </ol></li>
      </ol></li>
      <li>附录 - CSS3 参考手册
      <ol>
      <li>前缀</li>
      <li>颜色</li>
      <li>圆角</li>
      <li>阴影</li>
      <li>文本阴影</li>
      <li>渐变</li>
      <li>多背景</li>
      <li>选择器
      <ol>
      <li>第N个子节点</li>
      <li>直接子节点</li>
      <li>选择器取反</li>
      </ol></li>
      <li>动画（transitions）</li>
      <li>边框图片（border-image）</li>
      <li>盒模型（box-sizing）</li>
      <li>变换（transformations）</li>
      <li>弹性盒模型</li>
      <li>字体</li>
      <li>优雅降级
      <ol>
      <li>Modernizr</li>
      <li>Google Chrome Frame</li>
      </ol></li>
      <li>构建一个布局</li>
      </ol></li>
      </ol>
      
    </div>
    
  </body>
</html>
